#ifndef _LIST_H_
#define _LIST_H_

#include "Object.h"

namespace MySTL
{

template < typename T >
class List : public Object
{
private:
	List(const List& obj);
	List& operator =(const List& obj);

public:
	List() {}
	virtual bool insert(int n, const T& value) = 0;
	virtual bool insert(const T& value) = 0;
	virtual bool remove(int n) = 0;
	virtual bool get(int n, T& value) const = 0;
	virtual T& get(int n) = 0;
	virtual const T& get(int n) const = 0;
	virtual bool set(int n, const T& value) = 0;
	virtual int length() const = 0;
	virtual int find(const T& value) const = 0;
	virtual void clear() = 0;

	virtual T& operator [](int n) = 0;
	virtual const T& operator [](int n) const = 0;
};

}

#endif